1С: Добавление функционала прикрепления файлов

Ранее уже была статья.. но 2020 года. Решил обновить чуток. На примере актуальной версии 1С Бухгалтерия (3.0.195.40), добавлю функционал по прикреплению файлов к документу СК_ИскВходящий

  1. Копируем любой справочник с наименованием содержащим на конце словосочетание «ПрисоединенныеФайлы» и переименовываем его в СК_ИскВходящийПрисоединенныеФайлы
  2. Меняем ТИП у реквизита «ВладелецФайла» справочника на «СК_ИскВходящий»
  3. Включаем в состав определяемых типов «ПрисоединенныйФайл» и «ПрисоединенныйФайлОбъект» справочник «СК_ИскВходящийПрисоединенныеФайлы».

4. Расширим состав определяемого типа «ВладелецПрисоединенныхФайлов» нашим документом (ДокументСсылка) «СК_ИскВходящий».

5. Расширим состав типов свойства «Источник» у подписки «ПереопределитьПолучаемуюФормуПрисоединенногоФайла», включив в него справочник «СК_ИскВходящийПрисоединенныеФайлы».

6. Расширим состав типов свойства «Источник» подписки УстановитьПометкуУдаленияПрисоединенныхФайловДокументов, включив в него наш новый документ «ДокументОбъект.СК_ИскВходящий».

7. Расширим состав общей команды «ПрисоединенныеФайлы» и «ПрисоединенныеФайлыБП», включив в него наш новый документ (ДокументСсылка.СК_ИскВходящий).

8. Если необходимо добавить «Скрепку» на форму списка (в типовом варианте должна добавиться автоматически), чтобы картинка значения появлялась при наличии прикрепленных файлов у документа (строка в списке), то выполняем следующие действия:

В форме списка, у реквизита «Список» имеющего тип «ДинамическийСписок» выставляем галку «ПроизвольныйЗапрос», после чего открываем настройку списка (в там же в свойствах) и добавляем в блок «Выбрать»:

НаличиеФайлов.ЕстьФайлы КАК ЕстьФайлы

а в блок «ИЗ» :

{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеФайлов КАК НаличиеФайлов
ПО НашНовыйДокумент.Ссылка = НаличиеФайлов.ОбъектСФайлами}

После того, как поправили запрос, в реквизитах списка появится «ЕстьФайлы». Перетаскиваем реквизит в табличное поле и указываем в свойствах:

  • Вид: «Поле картинки»;
  • Положение заголовка: «Нет»;
  • Картинка значений: «Файл»;
  • Картинка шапки: «Файл».

Update: Иногда людям не нравится когда появляется сверху вот это меню:

Убрать достаточно просто:

Bitrix+Aspro: ошибка открытия модальных окон на телефонах iphone

Симптомы: на всех устройствах кроме iphone модальные окна открываются корректно, по коду вида:

<a href="#" class="button button-high button-orange" data-event="jqm" data-param-id="22" data-name="zayavka_na_konservi">Заказать</a>

На айфонах же, по нажатию на кнопку, идёт переадресация на страницу обработки формы.

Решение:

А пока костыльное, т.к. причину пока так и не нашел. Исследование привело к general.js ядра bitrix, в котором идёт проверка вида:

if(window.matchMedia('(min-width:992px)').matches){
...
}

И на айфонах она не проходит никогда. Есть подозрение, что проблема в свойствах css. Пока пофиксил просто отключением этой проверки.

PostgreSQL: возврат функцией таблицы

Задача: вызываемая функция должна вернуть таблицу.

Решение:

DROP FUNCTION get_count_np_by_ls(date,bigint,bigint,boolean); 

CREATE OR REPLACE FUNCTION public.get_count_np_by_ls(pr date, porog1 bigint, porog2 bigint, epd boolean)
 RETURNS TABLE(name character varying, cnt numeric)
 LANGUAGE plpgsql
AS $function$
	BEGIN	
       if epd=true then
		return QUERY
					select
						arname as brname,
						sum(acnt) as gcnt 
					 from (
					select * from ( 
					SELECT 
						areas.name as arname,
						count(*) as acnt
					FROM public.posting_addresses
					inner join ls_addresses on ls_addresses.ls=posting_addresses.ls and ls_addresses.address_type=1 and ls_addresses.area between 1 and 26
					inner join areas on areas.id=ls_addresses.area
					inner join ls on ls.id=posting_addresses.ls
					where 
						posting_addresses.period=pr and 
						ls.dt_cancel_epd_bill<=pr  
						group by areas.name,ls_addresses.city,ls_addresses.settler) as zx 
					where 
						zx.acnt between porog1 and porog2
					) as res
					group by brname;
		else
		return QUERY
					select
						arname as brname,
						sum(acnt) as gcnt 
					 from (
					select * from ( 
					SELECT 
						areas.name as arname,
						count(*) as acnt
					FROM public.posting_addresses
					inner join ls_addresses on ls_addresses.ls=posting_addresses.ls and ls_addresses.address_type=1 and ls_addresses.area between 1 and 26
					inner join areas on areas.id=ls_addresses.area
					inner join ls on ls.id=posting_addresses.ls
					where 
						posting_addresses.period=pr 
						group by areas.name,ls_addresses.city,ls_addresses.settler) as zx 
					where 
						zx.acnt between porog1 and porog2
					) as res
					group by brname;
		end if;
	END;	
$function$
;

Вызывается так:

SELECT * from get_count_np_by_ls('2026-05-01',1,1,true)

Внимание! Частой ошибкой является вызов select get_count_np_by_ls(‘2026-05-01’,1,1,true). В этом случае столбцы «схлопываются» в один

Защищено: Описание работы доработки

Это содержимое защищено паролем. Для его просмотра введите, пожалуйста, пароль:




Пенсионный возраст и голосование партий

В сентябре 2026 грядут выборы в государственную думу. В связи с этим хочу напомнить, кто из партий как голосовал за пенсионную реформу, после которой дожить до пенсии у среднестатистического человека, стало еще меньше шансов.

  • Единая Россия, ЗА 324 из 326
  • КПРФ, ПРОТИВ 39 из 40
  • Справедливая Россия, ПРОТИВ 17 и 17

Все остальные, это статистическая погрешность

1 2 3 323